package com.superatom.java8.interfacetest;

public class InterfaceTestInJava8 {

    public static void main(String args[]) {
        Vehicle vehicle = new Car();
        vehicle.print();
    }
}

/**
 * Java8 新特征，可以在接口上写static helper方法和默认方法，
 * 但是，这两个方法必须提供实现，实现这个接口的对象可以重写。
 *
 * 由于添加了Lambda表达式需要添加的新特征
 */
interface Vehicle {

    // 在接口里的默认方法，必须要实现
    default void print() {
        System.out.println("I am a vehicle!");
    }

    // 在接口里的默认方法，必须要实现
    static void blowHorn() {
        System.out.println("Blowing horn!!!");
    }
}

interface FourWheeler {

    default void print() {
        System.out.println("I am a four wheeler!");
    }
}

class Car implements Vehicle, FourWheeler {

    public void print() {
        Vehicle.super.print();
        FourWheeler.super.print();
        Vehicle.blowHorn();
        System.out.println("I am a car!");
    }
}
